package com.it.regex;

/**
 * 目标：体验一下使用正则表达式来校验数据格式的合法性
 * 需求：校验QQ号码是否正确，要求全部是数字，长度（6-20）之间，不能以0开头
 */

public class Test {
    public static void main(String[] args) {
        System.out.println(checkQQ(null));
        System.out.println(checkQQ("23678902"));
        System.out.println("--------------------------------------------");
        System.out.println(checkQQ1(null));
        System.out.println(checkQQ1("23678902"));
    }

    public static boolean checkQQ1(String qq) {
        //[1-9]:第一位的数字是1-9; \\d: 代表数字 {5,19}:长度在5-19之间
        return qq != null && qq.matches("[1-9]\\d{5,9}");
    }


    public static boolean checkQQ(String qq) {
        // 1.判断qq号是否合法
        if (qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20) {
            return false;
        }

        // 2.qq不是null，不是以0开头的，满足6-20之间的长度
        // 判断qq号码中是否都是数字
        // 如 qq=2512ghd098
        for (int i = 0; i < qq.length(); i++) {
            // 根据索引提取当前位置处的字符
            char ch = qq.charAt(i);
            // 判断ch记住的字符，如果不是数字，qq号码不合法
            if (ch < '0' || ch > '9') {
                return false;
            }
        }
        // 3.说明qq号码肯定是合法
        return true;
    }
}
